package com.chixing.day01_Syntax;
/*
 * 文档注释说明：用于说明该类的作用
 * 标识符的命名规则：
 *              由数字、字母、下划线_、美元符$ 组成
 * package包：字母全部小写，一般是网站或组织的逆序
 * class 类名：单词的瘦子母必须全部大写 ，不允许数字开头upperCamleCase
 * */

import java.lang.reflect.Array;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

public class SyntaxDemo {
    //主函数 main函数  ：程序运行的入口
    public static void main(String[] args) {
        byte b1=123;
        byte b2=-128;       //如果是+128出错  超出了范围

        short s1=3829;
        //byte b3=233; //233是int类型

        int age =20;
        int proCount=10;

        long telno=1864464244L;
//       后面加上L 就是long类型
//        1864464244本身是int类型

        float stuHeight = 1.78f;
        float proPrice =9.9f;

        double d1 = 99.9;

        char c1= 'a';
        char c2='%';
//        char c3 = 'ab';        error ：只能表示一个字符
        char c4 = '\'';
        char c5 = '\"';

        /*
        * char : '你‘ 1个字符
        * byte:UTF_8  3个字节{-28,-67,-96}
        * byte:ISO_8859_1  1个字节{63}
        *
        * */

        String sss="你";
        System.out.println("所占的字节数 ：" + sss.getBytes(StandardCharsets.UTF_8).length);

        System.out.println();

        System.out.println(c4);
        System.out.println(c5);

        boolean bo1 = false;
        boolean bo2=4<3;
        boolean isExist = false;  //但凡is 或者 has 开头的方法都是布尔型
        boolean hasNexxt = false;
        boolean flag ;   //返回的也是布尔类型

        System.out.println(bo2);

//        向上转换 高字节 = 低字节的值
//        数据类型的转换 convert ,cast
        byte b4 = 12;
        int i1 = b4 ;

        long l1 = 7788;  //7788 int类型（4字节）  将int类型转换成long类型
        long l2 = 7788l;      //本身就是long类型（8字节）  直接开辟空间

        double d3= 99.9f;


//        强制类型转换  ： byte b5 = (byte) int值  ，可能会造成精度缺失

//        byte 表示的范围  -128~ 127
        int i2 = 129 ;  //做了一个轮巡  输出值-127  130 输出的值为-126
//        byte b5 =i2;  error
        byte b5=(byte) i2;          //强制类型转换
        System.out.println(b5);

        float f3 = (float) 1481841348.146847874;
        System.out.println(f3);

//        char <------> int 可以进行相互转换
//        a ascall码值是97 ， A 65

        System.out.println((int)'a');
        System.out.println((char) 65);

        //a-z 用循环输出
       char ch1 = 'a';
       ch1++;
       System.out.println(ch1);
       for(char c= 'a';c<='z';c++){
           System.out.println(c);
       }

        System.out.println("a-b=" + ('a'-'b'));  //97-98


       for (char ch = 'A';ch<='Z';ch++){
           System.out.println(ch);
       }

       int x= 30;
       int y= 20;
//       if(x>y){
//           System.out.println("x > y");
//       }
//       else{
//           System.out.println("x<=y");
//       }
        if(x>y)           //if的逻辑块只有紧跟他的第一行代码
            System.out.println("x > y");   //第1一个块02和101是一个块
        System.out.println("x<=y");    //顺序执行，与其他没有任何关系

        short s4=1;
        s4+=1;
        System.out.println(s4);

        char ch2='即';
        System.out.println(ch2);



//        14. 输出100以内的素数
//        int count = 0;
        for(int i=2;i<=100;i++) {     //外层循环遍历除数
            int count = 0;
            for (int j = 2; j < i; j++) {  //内层循环遍历被除数
                if (i % j == 0) {         //如果能够整除
                    count++;
                }

            }
            if (count == 0) {
                System.out.println(i);

            }
        }
        /*15题
        * 第一行0个空格  9个*
        * 第二行1个空格  7个*
        * 第三行2个空格  5个*
        * 第四行3个空格  3个*
        * 第五行4个空格  1个*
        * 区别是：print()输出完毕后不换行，而println()输出完毕后会换行，
        * 因此println()不输出任何东西时，就输出一个换行符。
        * */
        for(int i=1;i<=5;i++){  //进行 行的计算
//            空格的计算
            for(int j=0;j<i;j++){
                System.out.print(" ");
            }
//            *的计算
            for(int k=2*(5-i)+1;k>=1;k-- ){
                System.out.print("*");

            }
            System.out.println();

        }

//        找出数组种重复的元素
        int[] arr = {10,43,28,3,84,10,74,89,33,43};
        for(int i=0;i<arr.length;i++){   //数组的遍历
            for(int j =i+1;j<=arr.length-1;j++){  //嵌套一个for循环遍历外面的for循环   循环到的元素后面的所有元素，两个元素进行对比，相等则输出
                if(arr[i]==arr[j]){
                    System.out.println(arr[i]);

                }
            }

        }


//        练习：数组中查询最大值，最小值，排序
        int[] arr1={10,43,28,3,84,10,74,89,33,43};
        for(int i=0;i<=arr1.length-1;i++){
            int max=0;
            if(max<arr1[i]){
                max = arr1[i];
                System.out.print(max);
            }
        }
        for(int j=0;j<=arr1.length-1;j++){
            int min=0;
            if(min>arr1[j]){
                min = arr1[j];
                System.out.print(min);
            }
        }

        for(int k=0;k<=arr1.length-1;k++){
            for(int f=0;f<arr1.length-1-k;f++){
                if(arr1[f]>arr1[f+1]){
                    int temp=arr1[f+1];
                    arr1[f+1]=arr1[f];
                    arr1[f]=temp;
                }

            }
        }
        System.out.println(Arrays.toString(arr1));










    }
}
